Samba pdc
=Installazione sistema Debian= * Procurarsi la ISO di un sistema Debian Linux 5.0 netinstall http://debian.fastbull.org/debian-cd/5.0.2/i386/iso-cd/debian-502-i386-netinst.iso * Installare il sistema base senza nessuna estensione , volendo si puo' accettare il setup di partizionamento del disco con LVM ( trattato a parte in questo articolo) =Installazione di Samba , LDAP e smbldap-tools= Installare i seguenti pacchetti , dopo aver aggiornato il sistema con apt-get update apt-get upgrade apt-get install samba slapd ldap-utils libnss-ldap libpam-ldap openssh-server Abbiamo cura di dotare il nostro host di un indirizzo IP statico e di far partire il server ssh nano -w /etc/network/interfaces auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.200 netmask 255.255.255.0 broadcast 192.168.0.255 network 192.168.0.0 gateway 192.168.0.1 A questo punto possiamo continuare il nostro setup interamente dalla shell remota con putty =Configurazione LDAP= Ldap è di una semplicità disarmante da configurare sotto Debian . L'unica cosa che dobbiamo fare è dare il comando dpkg-reconfigure slapd Un volta impartito il comando verremo guidati tramite un wizard attraverso i vari settaggi . Inserire nodomain come dominio principale e la password desiderata per questo dominio Il passo successivo della configurazione di LDAP e l'inclusione dello schema SAMBA di LDAP . Per fare questo dobbiamo copiare il file presente in /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz nella directory /etc/ldap/schema/ cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/ gunzip samba.schema.gz Cambiamo ora i parametri del file di configurazione /etc/slapd.conf nano -w slapd.conf include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema Per ora abbiamo finito con LDAP , metteremo mano successivamente ad alcuni file di configurazione . Facciamo ripartire il demone slapd e fermiamo eventuali processi smb e nmb con /etc/init.d/slapd restart & /etc/init.d/samba stop =Configurazione Samba= Copiamo il file originale smb.conf in smb.conf.save e riscriviamo completamente il file di configurazione cd /etc/samba mv smb.conf smb.conf.save nano -w smb.conf global workgroup = MYDOMAIN netbios name = MYDOMAIN server string = %h PDC (%v) interfaces = eth0, lo bind interfaces only = Yes passdb backend = ldapsam:ldap://127.0.0.1 enable privileges = yes log level = 0 log file = /var/log/samba/%m max log size = 50 smb ports = 139 445 hide dot files = yes name resolve order = wins host dns bcast time server = Yes guest account = guest show add printer wizard = No add user script = /bin/netuseradd -a -m '%u' delete user script = /bin/netuserdel '%u' add group script = /bin/netgroupadd -a -p '%g' delete group script = /bin/netgroupdel '%g' add user to group script = /bin/netgroupmod -m '%u' '%g' delete user from group script = /bin/netgroupmod -x '%u' '%g' # Disabilitare quando a fare il join al dominio è un Windows NT set primary group script = /bin/netusermod -g '%g' '%u' add machine script = /bin/netuseradd -w '%u' #unix password sync = yes passwd chat debug = false passwd program = /usr/bin/netpasswd %u passwd chat = *new password*%n\n *new password*%n\n *changed* # Profili Roaming #logon path = \\%L\profiles\%U logon path = logon home = logon script = netlogon.bat domain logons = Yes domain master = yes preferred master = Yes os level = 65 wins support = Yes # LDAP ldap suffix = dc=nodomain ldap user suffix = ou=Users ldap machine suffix = ou=Computers ldap group suffix = ou=Groups ldap idmap suffix = ou=Idmap ldap admin dn = cn=admin,dc=nodomain idmap backend = ldap:ldap://127.0.0.1 idmap uid = 10000-20000 idmap gid = 10000-20000 ldap passwd sync = Yes #ldap ssl = start tls ldap ssl = no map acl inherit = Yes #printing = cups lock directory = /var/lock/samba winbind use default domain = yes winbind enum users = yes winbind enum groups = yes security = user template shell = /bin/false public comment = "L: - Cartella Pubblica Utenti" path = /home/samba/public writeable = yes browseable = Yes hide unreadable = Yes directory mask = 0775 create mask = 0775 force create mode = 0775 force directory mode = 6775 security mask = 0777 force security mode = 0 directory security mask = 0777 force directory security mode = 0 #inherit acls = yes #inherit permissions = yes vfs objects = recycle recycle:repository = .cestino/%U recycle:keeptree = yes recycle:touch = yes recycle:versions= yes recycle:exclude = *.tmp *.bak ~$* recycle:exclude_dir = /tmp /temp /cache recycle:noversions = *.doc *.xls *.ppt homes comment = "K: - Cartella privata di %U, %u" writeable = yes create mask = 0700 directory mask = 0775 browseable = No force user = %U vfs objects = recycle recycle:repository = .cestino recycle:keeptree = yes recycle:touch = yes recycle:versions= yes recycle:exclude = *.tmp *.bak ~$* recycle:exclude_dir = /tmp /temp /cache recycle:noversions = *.doc *.xls *.ppte_dir = /tmp /temp /cache recycle:noversions = *.doc *.xls *.ppt netlogon comment = Network Logon Service path = /home/samba/netlogon guest ok = Yes locking = No browseable = no available = yes profiles comment = Profile Share path = /home/samba/profiles writeable = yes profile acls = Yes browsable = No Vediamo riga per riga cosa significano le entries appena scritte : sezione global workgroup = il nome del tuo gruppo di lavoro e nel nostro caso del dominio netbios name = il nome dell'host in cui abbiamo installato samba PDC server string = una stringa che aggiunge nome host %h e versione di samba %v interfaces = interfacce in acolto bind interfaces only = in ascolto solo nelle interfacce selezionate passdb backend = dove attingere al database degli utenti (LDAP!) enable privileges = supporto ai privilegi di Windows , per avere utenti e admins log level = verbosità dei log log file = posizione dei file di log max log size = fino a quanto puo' crescere il log ( in kilobytes ) smb ports = porte in ascolto 139 smb 445 nmb hide dot files = nascondere i file . di unix name resolve order = ordine di risoluzione dei nomi della rete time server = supporto alla sincronizzazione dell'ora degli host windows guest account = utente per l'account guest show add printer wizard = supporto per il wizzard di aggiunta di stampante di rete add user script = aggiungi utente da windows delete user script = cancella utente da windows add group script = aggiungi gruppo da windows delete group script = cancella gruppo da windows add user to group script = aggiungi utente a gruppo da Win delete user from group script = canc utente da grp da win set primary group script = settare gruppo principale da win add machine script = aggiungi workstation da win unix password sync = sincronia di utenti smb e utenti unix (non va con pwd a tempo) passwd chat debug = verbosità di debug durante l'handshake di pawwd passwd program = programma per il settaggio passwd passwd chat = sequenza di chat per pwd logon path = riempire se vogliamo i roaming profiles logon home = riempire se vogliamo i roaming profiles logon script = script di logon domain logons = attivare il supporto al logon di dominio domain master = il nostro server è master domain preferred master = è il master preferito os level = forza l'elezione e domain master nella rete smb wins support = è server wins ldap suffix = domain della directory ldap ldap user suffix = suffisso utenti directory ldap ldap machine suffix = suffisso macchine directory ldap ldap group suffix = suffisso gruppi directory ldap ldap idmap suffix = suffisso mappatura uid e gid unix con SID samba dir ldap ldap admin dn = amministratore directory ldap idmap backend = dove recuperare i valori idmap ( su LDAP ovvio !) idmap uid = range di valori idmap uid idmap gid = range di valori idmap gid ldap passwd sync = permette cambio passwd via logon di win quando sta scadendo ldap ssl = ldap è protetta da crittografia ? map acl inherit = permette l'estensione ai permessi posix acl printing = backend di stampa lock directory = file di lock delle directory winbind use default domain = parametri di winbind , utili se vogliamo unire samba ad un windows server domain controller winbind enum users = vedi sopra winbind enum groups = vedi sopra security = spiegato molto bene qui si potrebbe usare security = domain in un ambiente puro di windows domain , per i nostri scopi va bene anche user template shell = in ambito winbind fornisce una shell agli utenti samba sezione share di rete public comment = un commento da appendere alla directory condivisa path = il path unix della directory condivisa writeable = scrivibile ? browseable = sfogliabile ? hide unreadable = nascondere i files/directory a chi non ha privilegi ? directory mask = i permessi di default della directory , qui impostiamo larghi a 0777 create mask = anche qui stiamo larghi con i permessi di creazione dei nuovi file impostando a 0775 force create mode = forziamo la ceazione di nuovi file da parte di hosts windows connessi alla share samba in 0775 force directory mode = forziamo la creazione di nuove directory da parte di hosts windwos connessi allo share samba in 6775 security mask ='''regola la possibilità di cambiare i permessi ai files qui siamo al valore di default 0777 '''force security mode = anche qui lasciamo il default a 0 . E' essenzialmente un parametro per il controllo della modifica dei permessi sui file ( o almeno così mi pare di aver capito ) "force security mode" parameter may be treated as a set of bits that, when modifying security on a file, the user has always set to be 'on'. directory security mask = quali bit della maschera puo' cambiare l'utente windows dal pannello dei permessi dei files di windows. Qui permettiamo tutto con 0777 force directory security mode = analogo a force security mode , ma relativo alle directories 0 inherit acls = parametro ridondante per l'attivazione dei permessi estesi regolati dalle acl posix inherit permissions = come sopra vfs objects = supporto a oggetti di virtual file system (cestino su Unix) recycle:repository = ' parametri relativi alla creazione di un cestino di rete per i files cancellati '''recycle:keeptree = ' come sopra 'recycle:touch = ' come sopra 'recycle:versions= ' come sopra 'recycle:exclude = ' files da escludere dal cestino 'recycle:exclude_dir = ' directories da escludere dal cestino 'recycle:noversions = ' non includere le versioning dei file di MS office homes 'comment = ' commento da appendere alla directory condivisa 'writeable = ' scrivibile ? 'create mask = ' permessi di default alla creazione di un file qui mettiamo 700 ( la home è solo nostra) 'directory mask = ' permessi di directory qui scegliamo 775 '''browseable = sfogliabile ? force user = forziamo solo l'user %U che si logga vfs objects = etc etc vedi sopra sul cestino ' ''netlogon share speciale dove risiede il file netlogon.bat per mappare le unità di rete appena si entra nel dominio '''comment = descrizione path = ''' il path unix della directory di netlogon '''guest ok = permetiamo anche utenti guest con Yes 'locking = non blocchiamo la directory ad un solo accesso browseable = ''' sfogliabile ? '''available = disponibile ? profiles share speciale per lo store dei profili degli utenti del dominio comment = Un commento per la directory path = il path unix della directory dei profili 'writeable = ' scrivibile 'profile acls = ' supporto alle acl posix ? 'browsable = ' sfogliabile? =scorciatoie per la vita facile del sysadmin= Abbiamo settato correttamente il nostro file samba e siamo a buon punto sul fronte delle condivizione di rete. Dobbiamo inoltre creare delle scorciatoie per i nostri scriptini di smbldap-tools . Mica vorremo consumare i nostri polpastrelli su quelle tastieracce. cd /bin ln -sf /usr/sbin/smbldap-groupadd netgroupadd ln -sf /usr/sbin/smbldap-groupdel netgroupdel ln -sf /usr/sbin/smbldap-groupmod netgroupmod ln -sf /usr/sbin/smbldap-useradd netuseradd ln -sf /usr/sbin/smbldap-userdel netuserdel ln -sf /usr/sbin/smbldap-usermod netusermod La nostra vita ora è più facile. =configurazione di smbldap-tools= Passiamo ora a configurare smbldap-tools. Questo simpatico set di perl script ci faciliterà nel compito dell'inserimento di gruppi e utenti nelle directory di ldap. Dianzi abbiamo creato dei link simbolici in /bin per facilitare la digitazione dei comandi ora andiamo ad editare i files di configurazione per il corretto funzionamento. Otteniamo per prima cosa il SID della nostra macchina con : net getlocalsid Annotiamo il risultato di questo comando che dovrebbe essere qualcosa del genere : S-1-5-21-481267281-1072721385-2635622241 Mettiamo mano al file di configurazione /etc/smbldap-tools/smbldap.conf cd /etc/smbldap-tools nano -w smbldap.conf ###################### # General Configuration # ###################### SID="inserire il valore risultante da net getlocalsid" sambaDomain="MYDOMAIN" ###################### # # LDAP Configuration # ###################### slaveLDAP="127.0.0.1" slavePort="389" masterLDAP="127.0.0.1" masterPort="389" ldapTLS="0" verify="require" cafile="/etc/smbldap-tools/ca.pem" clientcert="/etc/smbldap-tools/smbldap-tools.pem" clientkey="/etc/smbldap-tools/smbldap-tools.key" suffix="dc=nodomain" usersdn="ou=Users,${suffix}" computersdn="ou=Computers,${suffix}" groupsdn="ou=Groups,${suffix}" idmapdn="ou=Idmap,${suffix}" sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}" scope="sub" hash_encrypt="CRYPT" crypt_salt_format="%s" ###################### # # Unix Accounts Configuration # ###################### userLoginShell="/bin/bash" userHome="/home/%U" userHomeDirectoryMode="700" userGecos="System User" defaultUserGid="513" defaultComputerGid="515" skeletonDir="/etc/skel" defaultMaxPasswordAge="0" ###################### # # SAMBA Configuration # ###################### userSmbHome="\\MYDOMAIN\%U" userProfile="\\MYDOMAIN\profiles\%U" #userHomeDrive="H:" userScript="netlogon.bat" ########################################## # # SMBLDAP-TOOLS Configuration (default are ok for a RedHat) # ########################################## with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd" with_slappasswd="0" slappasswd="/usr/sbin/slappasswd" # comment out the following line to get rid of the default banner # no_banner="1"